(for Internet Explorer)
$ echo  "<P>sample</P>"  > a.xml
$ VAR=`4xpath --string  "a.xml" "/P"`
Result (XPath string):
======================
$ echo  "$VAR"
sample
XML のデータを取り出します。 XPath を使います。
sudo apt-get install python-4suite-xml
インストール
起動速度が非常に遅い問題があります。
CSV などのテキスト形式の表をソート(並べ替え)します。
$ cp /dev/stdin score.txt  #// ファイルを作成する
yamada    1   90
hasegawa  1  100
  sato    2  64
SUZUKI    2  93
^C
$ sort -bf score.txt  #// 1列目を文字列でソートする
hasegawa  1  100
  sato    2  64
SUZUKI    2  93
yamada    1   90
$ sort -n -r --key="3,3" score.txt
hasegawa  1  100
SUZUKI    2  93
yamada    1   90
  sato    2  64
-b : 先頭の空白文字をソートする内容に含めない
-f : 大文字小文字を区別しない
-n : 数値としてソートする
-r : 逆順
--key : キーの開始列、終了列。
開始列≠終了列のとき、第1キーと第2キー…という意味ではない。
どういうソートになるのかは不明。
参考
変数の参照(展開)を再度行います。
$ VAR1=Value
$ VAR2=VAR1
$ echo __\${${VAR2}}__
__${VAR1}__
$ eval echo __\${${VAR2}}__
__Value__
通常の展開
eval による2段階の展開
→ viを使い倒そう (Web)
起動する、開く
vi a.txt
終了する
[ESC]:q![Enter]
i(文字列)[ESC]
[ESC] で入力モードから抜ける
文字を入力する
[Enter]
カーソル移動
h
j
k
l
k
j
h
l
つまり
(右手ホームポジション)
ただし、行末に入力するときは、
a(文字列)[ESC]
削除する
[ESC] x
入力モード中に
BackSpace
[ESC] d$
検索する
/(キーワード)
[Enter]
n
N
行末までの削除
[ESC]ZZ
保存して終了
保存しないで終了
すべてのUNIX系OS上で必ず使えるテキストエディタ
カーソルキー、ページアップダウンキーも使えます。
リードオンリーで編集できないときは、sudo vi で起動してください。
Delete
Nautilus (ファイルマネージャ)でファイルを右クリックしてテキストを編集することもできます。
マクロ
qa
記録開始
q
記録終了
@a
実行
保存するだけ
[ESC]:w[Enter]
行番号表示
:set number[Enter]
関連
ヤンクバッファ
(クリップボード)
行単位で操作します。 (文字単位操作は、数えるのが面倒)
yy
2yy
1行コピー(ヤンク)
2行コピー(ヤンク)
dd
1行カット
p
1行下に貼り付け(ペースト)
マウスをつかって、コピー(選択のみ)&ペースト(中クリック)でも可
2yy
2行カット
アンドゥ、リドゥ
u
アンドゥ
Ctrl + r
リドゥ
背景を黒に変える
Ctrl + マウスの中ボタン [ Enable Reverse Video ] にチェック
関連
参考
1文字削除
または
sudo vi a.txt
Ubuntu、Mac OS X にも入っているテキストエディターです。
vi のような挿入などのモードはありません。
画面の下に主なキーボード・ショートカットが表示されています。 ^X は [Ctrl]+[X] です。
nano a.txt
a.txt ファイルを開く
貼り付け
[Shift]+[Insert]
行番号の表示
[Ctrl]+[C]
[Ctrl]+[^]
範囲選択の開始
カット
[Ctrl]+[K]
範囲選択のキャンセル
[Ctrl]+[^]
終了
[Ctrl]+[X]
次のキーは、Windows と同じです。
・カーソル、Del、BackSpace、PageUp、PageDown
sudo が必要なこともあります
[Ctrl]+[U]
または
コピー
[Ctrl]+[K]
[Ctrl]+[U]
保存
[Ctrl]+[O]
gedit (path) &
コマンドラインからエディタを起動:
Nautilus (ファイルマネージャ)でファイルを右クリックしてテキストを編集するときのプログラムです。
gedit が無いとき
sudo gedit (path)
sudo
保存に失敗したとき
sudo を付けるときは、末尾に & を付けないこと
wc
テキストファイルのバイト数、単語数、行数を表示します。
$ wc -l file1.txt
28 file1.txt
サンプル
file1.txt の行数を表示する
$ cat file1.txt | wc -l
28
指定した秒数だけ、待ちます。
サンプル
sleep  1
実行時間を表示します。
$ time sleep 1

real    0m1.012s
user    0m0.004s
sys     0m0.000s
サンプル
… sleep 1 を実行する時間を表示します
( time command ) > outputfile
リダイレクトするとき
sudo date -s "2011/05/26 10:11:21"
時刻を設定する
sudo date -s "5/26 10:11 2011"
タイムゾーンを設定する
user1@ubuntu:~$ date
2011年  7月  4日 月曜日 23:10:01 JST
現在の日時を表示する
sudo dpkg-reconfigure tzdata
シェルから
何もしないコマンドです。
アセンブラの nop や、C言語の空文と同じです。
一部のシェルでは、then や do の後にコロンが必要です。
シェルから起動する任意のコマンドにおいて、関連する実行ファイルを切り替えます。
切り替える候補に追加する(インストール)
update-alternatives --install  <LinkSource> <GroupName> <LinkTarget> <Priority>
                  [ --slave    <LinkSource> <GroupName> <LinkTarget> ]
【引数】
LinkSource
GroupName
実行ファイルのパス
コマンドのグループ名。 通常、実行ファイル名と同じにする
LinkTarget
実行する候補の1つとする実行ファイルのパス
Priority
優先度。 通常、バージョン番号にする。
update-alternatives --install  /usr/bin/javac  javac  /usr/local/bin/javac  1000
サンプル
関連
update-alternatives --display  <GroupName>
update-alternatives に1つも登録していないときはエラーになります。
現在の状況?を表示する
update-alternatives --remove  <GroupName> <LinkTarget>
切り替える候補から除外する(リムーブ)
参考
--slave オプションは、スレーブ・リンクも同時に作成します。
--config オプションで切り替える LinkTarget に連動して切り替わる、別の LinkSource と
LinkTarget の関係を、スレーブ・リンクと言います。
--remove-all オプションは、<LinkSource> ファイルも削除されるので、注意してください。
update-alternatives --remove-all  <GroupName>
切り替える
update-alternatives --config  <GroupName>
上記コマンドを入力すると、選択画面が表示されます。
バージョン別に if で分岐した ln コマンドの羅列のシェルスクリプトと同じことしかできません。
よって、全てのユーザーから使う場所にある実行ファイルは、ユーザーごとに切り替えること
はできません。
sudo shutdown -h now
sudo reboot
電源を切る
再起動
OS の終了など
アプリケーションの終了など
一時停止(サスペンド)する
Ctrl+Z
再開する
fg
$ who
root  pts/0 Mar 5 01:34 (sample.jp)
user1 pts/1 Mar 5 01:33 (192.168.100.XXX)
誰がログインしているかを調べる
$ who
root  pts/0 Mar 5 01:34 (sample.jp)
user1 pts/1 Mar 5 01:33 (192.168.100.XXX)
user1 pts/2 Mar 5 03:33 (192.168.100.XXX)
$ ps aux | grep pts/1
user1    7275  0.0  0.1   8916  1188 ?        0:00 sshd: m-toda@pts/1
user1    7276  0.0  0.5  11344  5452 pts/1    0:00 -bash
user1   12407  0.0  0.0   4960   772 pts/7    0:00 grep --color=auto pts/1
$ kill 7275
$ who
root  pts/0 Mar 5 01:34 (sample.jp)
user1 pts/2 Mar 5 03:33 (192.168.100.XXX)
接続が強制的に切断されたとき、Linux ホストにはログイン状態が残ってしまいます。
強制終了したいアカウントが ssh でログインしている場合は、who コマンドで、pts/#
を調べて、該当する sshd プロセスを強制終了させてください。
関連
//pc01/folder/file.txt のように参照します。
ネットワーク・コンピュータの参照
日本語コード、改行コード
UNIX 環境では、日本語は、EUC コードです。
改行は、LF(0x0A)のみです。
/usr/local/sbin/smbldap-groupshow.pl (group)
で、グループのメンバーを表示します。
smbldap-groupshow.pl
smbldap-usershow.pl
/usr/local/sbin/smbldap-usershow.pl (user)
で、ユーザの情報を表示します。
→ LDAP
新規作成
新規ファイルを作成できるかどうかは、ディレクトリのアクセス権によって、決まります。
ディレクトリに、グループセット(2000=------s---) が立っていたら、
  新規作成したファイルの所属グループは、ディレクトリの所属グループと同じになります。
  新規作成したフォルダは、グループセットも立ちます。
アクセス権は、Samba の設定により決まります。
上書き
上書きしても、アクセス権は変わりません。
/usr/bin
/usr/local
システム関連のソフトウェアをアップデートしても変更されない
自分でコンパイルしたバイナリ
所有権やアクセス権を変更してコピーする
export  w_InstallCmd="install --mode=777 -pvD"
$w_InstallCmd  "ProgramA"  "/proj/export/$USER/userland"
/tmp
テンポラリ領域。 /etc/cron.daily/tmpwatch が定期的に削除します。
・d = directory
・r = read 権利 : ファイルなら内容の読み込み、フォルダーなら直下のファイル名一覧
・w = write 権利 : ファイルなら内容の変更、フォルダーなら新規作成や削除
・x = execute 権利 : 実行ファイルの起動、フォルダーなら直下の実行ファイルの起動
$ ls -l
drwxrwx---     5 user  group      4096  11:32  folder
左から、フォルダーかどうか、所有者の rwx、グループの rwx、その他の rwx
g+s
u+r
u+w
u+x
g+r
g+x
g+w
o+x
o+w
o+r
ディレクトリに set GID ビットが1になっているときは、そのディレクトリの直下に新規作成
したファイルの所有グループが、ディレクトりの所属グループに設定されます。
0 になっているときは、新規作成したファイルの所有グループが、ユーザーと同じ名前の
グループになります。
8進数
参考
実行ファイルに set UID ビットが1になっているときは、ユーザーを所有者に変更して
から実行します。 一般に root ユーザーに変更して、システムの変更ができるように
なりますが、セキュリティ上の問題になる可能性が高いため、OS で無視されることが
あります。
参考
サンプル
2770 = g+s, u+rwx, g+rwx, o+rwx
744 = u+rwx, g+r, o+r
drwxrwx---
ファイルやフォルダー(ディレクトリ)にアクセスできるユーザーやグループを制限することができます。
ls -l コマンドを入力すると、ファイルやフォルダーのパーミッションを確認できます。
chmod -R 2770 folder
ディレクトリにアクセス権を禁止しても、その中のアクセス権が許可されていたら、
フルパスで中を見ることができてしまいます。
左から、所有者、グループ、その他
-R は、サブフォルダ・ファイルも変更
chmod [ugoa][+-=][rwx] , ...
chmod -R o-rwx folder
サブフォルダも含めて、others を閲覧禁止にします。
u=owner(user), g=group, o=others, a=all(=ugo)
chmod a+w file
全員が書き込み可能にする
chmod --reference=RefFile file
file を RefFile と同じ属性にします。(GNU のみ)
ファイルやフォルダーのパーミッションを変えます。
$ ls -l
drwxrwx---     5 user  group      4096  11:32  folder
drwxrwx---
現在のパーミッションは、ls -l コマンドから確認できます。
サンプル
参考
Windows (Samba) では、セキュリティタブから、パーミッションを変えることができます。
umask [<Mask>]
現在のプロセスが、ファイルやフォルダーを新規作成したときに設定しないパーミッションを設定します。
【引数】
Mask
設定しないビットの8進数表記。 省略時は現在の設定を表示する
umask 022
サンプル
新規作成するファイルやフォルダーは、現在のプロセスのユーザー以外は
変更ができないようにします。
$ id
uid=1000(user1) gid=1002(group1) groups=1002(group1),1001(admin)
Android
apache : 33(www-data)
id [<UserName>]
ユーザーの番号と所属グループを一覧します。
参考
サンプル
ユーザーやグループの例
Linux
4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),1000(user1)
samba: 122(sambashare)
system (uid=1000), wifi (1010), vpn (1016)
【引数】
UserName
表示するユーザー名。 省略時は現在のユーザー
groups [<UserName>]
ユーザーの所属グループを一覧します。
【引数】
UserName
表示するユーザー名。 省略時は現在のユーザー
$ groups
user1 group1 admin
サンプル
でも、所属グループを確認できます。